/**

实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn ）。

示例 1：

输入：x = 2.00000, n = 10
输出：1024.00000
示例 2：

输入：x = 2.10000, n = 3
输出：9.26100
示例 3：

输入：x = 2.00000, n = -2
输出：0.25000
解释：2-2 = 1/22 = 1/4 = 0.25

 */

/**
 * 解题思路：
 *  正常解题， 只是有几个边界条件需要去掉
 *    - 当 n 为0时，直接输出1 (任何数的0次方都等于1)
 *    - 当 n 为负数时， x为 1/x n转为绝对值进行就算
 *  当以上的两个条件筛除过后，我们再筛除X的情况
 *    - 当 x 为1时， 直接返回1
 *    - 当 x 为-1时，判断n的绝对值对2取余是否能整除 整除返回1 不整除返回-1
 *  不符合以上条件 正常处理即可
 */

/**
 * @param {number} x
 * @param {number} n
 * @return {number}
 */
var myPow = function (x, n) {
  if (n === 0) {
    return 1;
  }
  if (n < 0) {
    n = Math.abs(n);
    x = 1 / x;
  }
  if (x === 1) {
    return 1;
  }
  if (x === -1) {
    return Math.abs(n) % 2 === 0 ? 1 : -1;
  }
  let res = x;
  for (let i = 0; i < n - 1; i++) {
    res = res * x;
    if (res === 0) {
      break;
    }
  }
  return res;
};
myPow(-1.0, 2147483647);
// myPow(2.0, -2147483648);
// myPow(-1.0, -2147483648);
